package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @desc ImplementTargetScoreFactorsDataHandleComReqDto
 * @使用场景
 */
@Data
public class ImplementTargetScoreFactorsDataHandleComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 数据对象批次标识
     */
    @NotNull(message = "数据对象批次标识不能为空")
    @ApiModelProperty("数据对象批次标识")
    private String dataObjectBatchCode;

    /**
     * 本目标归属周期的计算周期五模型 LAST_CYCLE:末级周期 MID_OF_PROCESS_CYCLE:中间周期 SUB_CYCLE:子周期 MID_CYCLE:中期 PARENT_CYCLE:父周期
     */
    @NotNull(message = "本目标归属周期的计算周期五模型不能为空")
    @ApiModelProperty("本目标归属周期的计算周期五模型")
    private String standardDataCalcCycleModel;

    /**
     * 目标得分计算公式 CALC:自己计算得分 CLONE_FROM_EVA_SUBJECT:当前树克隆主树得分
     */
    @NotNull(message = "目标得分计算公式不能为空")
    @ApiModelProperty("目标得分计算公式")
    private String calcOrClone;

    /**
     * 目标得分本级与下级组合变量 RANK_CALC:计算本级得分 DOWN_CALC:计算下级得分 RANK_AND_DOWN_CALC:计算本级+下级得分
     */
    @NotNull(message = "目标得分本级与下级组合变量不能为空")
    @ApiModelProperty("目标得分本级与下级组合变量")
    private String reportScoreCountFormula;

    /**
     * 主观得分
     */
    @ApiModelProperty("主观得分")
    private Double subjectiveScore;

    /**
     * 客观得分
     */
    @ApiModelProperty("客观得分")
    private Double objectiveScore;

    /**
     * 过程中期得分
     */
    @ApiModelProperty("过程中期得分")
    private Double processMidCycleReportScore;

    /**
     * 中期得分
     */
    @ApiModelProperty("中期得分")
    private Double midCycleReportScore;

    /**
     * 最近平均分
     */
    @ApiModelProperty("最近平均分")
    private Double processReportAverageScore;

    /**
     * 汇报得分
     */
    @ApiModelProperty("汇报得分")
    private Double reportScoreValue;

    /**
     * 下级得分
     */
    @ApiModelProperty("下级得分")
    private Double lowReportScore;

    /**
     * 克隆目标得分
     */
    @ApiModelProperty("克隆目标得分")
    private Double cloneTargetScore;

}
